.quad compat_vcpu_op
.quad compat_ni_hypercall /* 25 */
.quad compat_mmuext_op
- .quad compat_acm_op
+ .quad do_acm_op
.quad compat_nmi_op
.quad compat_sched_op
.quad compat_callback_op /* 30 */
.byte 3 /* compat_vcpu_op */
.byte 0 /* compat_ni_hypercall */ /* 25 */
.byte 4 /* compat_mmuext_op */
- .byte 1 /* compat_acm_op */
+ .byte 1 /* do_acm_op */
.byte 2 /* compat_nmi_op */
.byte 2 /* compat_sched_op */
.byte 2 /* compat_callback_op */ /* 30 */
ifeq ($(CONFIG_COMPAT),y)
# extra dependencies
-acm_ops.o: compat/acm_ops.c
grant_table.o: compat/grant_table.c
kexec.o: compat/kexec.c
schedule.o: compat/schedule.c
* License.
*
* Process acm command requests from guest OS.
- *
*/
-#ifndef COMPAT
#include <xen/config.h>
#include <xen/types.h>
#include <xen/lib.h>
#include <xen/guest_access.h>
#include <acm/acm_hooks.h>
-typedef long ret_t;
-
-#endif /* !COMPAT */
-
#ifndef ACM_SECURITY
-
long do_acm_op(int cmd, XEN_GUEST_HANDLE(void) arg)
{
return -ENOSYS;
}
-
#else
-
-#ifndef COMPAT
int acm_authorize_acm_ops(struct domain *d)
{
- /* currently, policy management functions are restricted to privileged domains */
- if (!IS_PRIV(d))
- return -EPERM;
- return 0;
+ return (IS_PRIV(d) ? 0 : -EPERM);
}
-#endif
-
-ret_t do_acm_op(int cmd, XEN_GUEST_HANDLE(void) arg)
+long do_acm_op(int cmd, XEN_GUEST_HANDLE(void) arg)
{
- ret_t rc = -EFAULT;
+ long rc = -EFAULT;
- if (acm_authorize_acm_ops(current->domain))
+ if ( acm_authorize_acm_ops(current->domain) )
return -EPERM;
switch ( cmd )
rc = acm_change_policy(&chgpolicy);
- if (rc == 0) {
- if (copy_to_guest(arg, &chgpolicy, 1) != 0) {
+ if (rc == 0)
+ if (copy_to_guest(arg, &chgpolicy, 1) != 0)
rc = -EFAULT;
- }
- }
break;
}
rc = acm_relabel_domains(&relabeldoms);
- if (rc == 0) {
- if (copy_to_guest(arg, &relabeldoms, 1) != 0) {
+ if (rc == 0)
+ if (copy_to_guest(arg, &relabeldoms, 1) != 0)
rc = -EFAULT;
- }
- }
break;
}
return rc;
}
-#endif
-
-#if defined(CONFIG_COMPAT) && !defined(COMPAT)
-#include "compat/acm_ops.c"
-#endif
+#endif /* defined(ACM_SECURITY) */
/*
* Local variables:
+++ /dev/null
-/******************************************************************************
- * compat/acm_ops.c
- */
-
-#include <compat/acm.h>
-#include <compat/acm_ops.h>
-
-#define COMPAT
-#define ret_t int
-
-#define do_acm_op compat_acm_op
-
-static inline XEN_GUEST_HANDLE(void) acm_xlat_handle(COMPAT_HANDLE(void) cmp)
-{
- XEN_GUEST_HANDLE(void) nat;
-
- guest_from_compat_handle(nat, cmp);
- return nat;
-}
-
-#define acm_setpolicy compat_acm_setpolicy
-#define acm_set_policy(h, sz) acm_set_policy(acm_xlat_handle(h), sz)
-
-#define acm_getpolicy compat_acm_getpolicy
-#define acm_get_policy(h, sz) acm_get_policy(acm_xlat_handle(h), sz)
-
-#define acm_dumpstats compat_acm_dumpstats
-#define acm_dump_statistics(h, sz) acm_dump_statistics(acm_xlat_handle(h), sz)
-
-#define acm_getssid compat_acm_getssid
-#define acm_get_ssid(r, h, sz) acm_get_ssid(r, acm_xlat_handle(h), sz)
-
-#define xen_acm_getdecision acm_getdecision
-CHECK_acm_getdecision;
-#undef xen_acm_getdecision
-
-#include "../acm_ops.c"
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
compat-arch-$(CONFIG_X86) := x86_32
headers-y := \
- compat/acm.h \
- compat/acm_ops.h \
compat/callback.h \
compat/elfnote.h \
compat/event_channel.h \
! cpu_user_regs arch-x86/xen-@arch@.h
! trap_info arch-x86/xen.h
! vcpu_guest_context arch-x86/xen.h
-? acm_getdecision acm_ops.h
? evtchn_alloc_unbound event_channel.h
? evtchn_bind_interdomain event_channel.h
? evtchn_bind_ipi event_channel.h